﻿namespace OOP.Template.DesignPattern
{
    public abstract class PaymentProcessor
    {
        // 模板方法（固定流程）
        public void ExecutePayment(decimal amount)
        {
            if (ValidatePayment())
            {
                ProcessPayment(amount);
                NotifyUser();
            }
            else
            {
                Console.WriteLine("支付验证失败！");
            }
        }

        // 抽象方法（由子类实现）
        protected abstract bool ValidatePayment();
        protected abstract void ProcessPayment(decimal amount);

        // 默认实现（可被子类覆盖）
        protected virtual void NotifyUser()
            => Console.WriteLine("支付成功通知已发送");
    }

}
